/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/9/21 10:46
 * @Copyright
 */
package List;
import java.util.LinkedList;

/*
用法·同ArrayList
区别：
            ArrayList      LinkedList
数据结构--------数组-------------链表
查询速度--------快---------------慢
增删速度--------慢---------------快
内存空间--------小---------------大
 */
public class LinkedsListTest1 {
    public static void main(String[] args) {
        //创建集合对象
        LinkedList link=new LinkedList();
        //添加元素  自动装箱 适合于JDK1.5
        link.add(1);
        link.add(2);
        //JDK1.5以前，必须如下使用
        link.add(new Integer(2));
        link.add(new Integer(3));

        //可以加入重复数据
        link.add(2);
        for (int i=0;i< link.size();i++){
            Object o=(Integer) link.get(i);
            System.out.println(o);
        }
        //迭代器

        //增强for循环

        System.out.println();

        //删除指定下标元素
        link.remove(2);

        System.out.println("判断是否包含某个元素："+link.contains(5));
        System.out.println("判断集合是否为空："+link.isEmpty());

        //集合转数组
        Object[] objects= link.toArray();
        for (int i = 0; i < objects.length; i++) {
            Integer num=(Integer) objects[i];
            System.out.println(num);
        }
        Integer[] iArray=new Integer[link.size()];
        link.toArray(iArray);
        for (int i = 0; i < iArray.length; i++) {
            Integer inum=iArray[i];
            System.out.println(inum);
        }
        //在链表的头部插入数据(LinkedList特有的方法）
        link.addFirst(11);
        link.push(33); //与addFirst方法一致
        link.offerFirst(55);

        //在链表的尾部插入数据(LinkedList特有的方法）
        link.addLast(11);
        link.offer(44); //与addLast方法一致
        link.offerLast(66);

        //删除头 (LinkedList特有的方法）
        link.removeFirst();
        //删除尾 (LinkedList特有的方法）
        link.removeLast();

        //查找
        link.get(1);//通过下标获取元素，通用的方法
        link.getFirst();//获取第一个元素 (LinkedList特有的方法）
        link.getLast();//获取最后一个元素 (LinkedList特有的方法）
    }
}
